home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / LF-MAT30.ZIP / MATRIX.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1993-10-20  |  16.0 KB  |  899 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 1.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  TINTEGER010(50)
  32.     Integer  TINTEGER011(50)
  33.     Integer  TINTEGER012(50)
  34.     Integer  INTEGER013
  35.     Integer  INTEGER014
  36.     Integer  INTEGER015
  37.     String   TSTRING001(7)
  38.     String   TSTRING002(2)
  39.     String   TSTRING003(2)
  40.     String   STRING004
  41.     String   STRING005
  42.     String   STRING006
  43.     String   STRING007
  44.     String   STRING008
  45.     String   STRING009
  46.     String   TSTRING010(14)
  47.     String   STRING011
  48.     String   STRING012
  49.     String   STRING013
  50.     String   STRING014
  51.     String   STRING015
  52.     String   STRING016
  53.     String   STRING017
  54.     String   TSTRING018(10)
  55.     String   STRING019
  56.     String   STRING020
  57.     String   STRING021
  58.     String   STRING022
  59.     String   STRING023
  60.     String   STRING024
  61.     String   TSTRING025(5)
  62.     String   TSTRING026(50)
  63.     String   STRING027
  64.     String   STRING028
  65.     String   TSTRING029(16)
  66.     String   STRING030
  67.     String   TSTRING031(10)
  68.     String   STRING032
  69.     String   STRING033
  70.     String   TSTRING034(50)
  71.     String   STRING035
  72.     String   STRING036
  73.     String   STRING037
  74.     String   STRING038
  75.     String   STRING039
  76.     String   TSTRING040(10)
  77.     String   TSTRING041(16)
  78.     String   STRING042
  79.     String   STRING043
  80.     String   TSTRING044(7)
  81.     String   STRING045
  82.     String   STRING046
  83.     String   STRING047
  84.     String   STRING048
  85.     String   STRING049
  86.  
  87. ;------------------------------------------------------------------------------
  88.  
  89.     FOpen 1, PPEPath() + "MATRIX.CFG", 0, 0
  90.     FGet 1, STRING048
  91.     FGet 1, STRING037
  92.     FGet 1, STRING005
  93.     FGet 1, STRING006
  94.     FGet 1, STRING019
  95.     For INTEGER004 = 1 To S2I(STRING019, 10)
  96.         FGet 1, TSTRING018(INTEGER004)
  97.     Next
  98.     FGet 1, TSTRING044(1)
  99.     FGet 1, TSTRING044(2)
  100.     FGet 1, TSTRING044(3)
  101.     FGet 1, TSTRING044(4)
  102.     FGet 1, TSTRING044(7)
  103.     FGet 1, TSTRING001(1)
  104.     FGet 1, TSTRING001(2)
  105.     FGet 1, TSTRING001(3)
  106.     FGet 1, TSTRING001(4)
  107.     FGet 1, TSTRING001(5)
  108.     FGet 1, TSTRING002(1)
  109.     FGet 1, TSTRING001(6)
  110.     FGet 1, TSTRING044(5)
  111.     FGet 1, TSTRING003(1)
  112.     FGet 1, TSTRING002(2)
  113.     FGet 1, TSTRING001(7)
  114.     FGet 1, TSTRING044(6)
  115.     FGet 1, TSTRING003(2)
  116.     FClose 1
  117.     Gosub LABEL040
  118.     FOpen 1, PPEPath() + "MATRIX.PCB", 0, 0
  119.     For INTEGER004 = 1 To 16
  120.         FGet 1, TSTRING029(INTEGER004)
  121.     Next
  122.     FClose 1
  123.     STRING009 = Chr(13)
  124.     STRING043 = "@X07C:\PCB\NODE@NODE@>"
  125.     If (Lower(STRING037) == "random") Then
  126.         INTEGER004 = Random(1) + 1
  127.         Select Case (INTEGER004)
  128.             Case 1
  129.                 STRING038 = "dos"
  130.             Case 2
  131.                 STRING038 = "lightbar"
  132.         End Select
  133.     Else
  134.         STRING038 = Lower(STRING037)
  135.     Endif
  136.     Select Case (STRING038)
  137.         Case "dos"
  138.             Goto LABEL037
  139.         Case "lightbar"
  140.             STRING012 = ReadLine(PPEPath() + "MATRICES.CFG", 1)
  141.             INTEGER009 = S2I(STRING012, 10)
  142.             INTEGER004 = Random(S2I(STRING012, 10) - 1) + 1
  143.             INTEGER008 = 2 + (INTEGER004 - 1) * 5
  144.             STRING011 = ReadLine(PPEPath() + "MATRICES.CFG", INTEGER008)
  145.             STRING004 = ReadLine(PPEPath() + "MATRICES.CFG", INTEGER008 + 1)
  146.             STRING007 = ReadLine(PPEPath() + "MATRICES.CFG", INTEGER008 + 2)
  147.             STRING008 = S2I(ReadLine(PPEPath() + "MATRICES.CFG", INTEGER008 + 3), 10)
  148.             INTEGER007 = S2I(STRING004, 10)
  149.             INTEGER001 = S2I(STRING007, 10)
  150.             Goto LABEL001
  151.     End Select
  152.     End
  153.     :LABEL001
  154.     StartDisp 1
  155.     :LABEL002
  156.     INTEGER002 = 5
  157.     Cls
  158.     DispFile PPEPath() + STRING011, 1
  159.     AnsiPos INTEGER007, INTEGER001
  160.     For INTEGER004 = 1 To 4
  161.         Print TSTRING001(INTEGER004)
  162.         AnsiPos INTEGER007, INTEGER001 + INTEGER004
  163.     Next
  164.     For INTEGER004 = 6 To 7
  165.         If (Lower(TSTRING002(INTEGER004 - 5)) == "yes") Then
  166.             AnsiPos INTEGER007, INTEGER001 + INTEGER002 - 1
  167.             Print TSTRING001(INTEGER004)
  168.             INTEGER002 = INTEGER002 + 1
  169.         Endif
  170.     Next
  171.     AnsiPos INTEGER007, INTEGER001 + INTEGER002 - 1
  172.     Print TSTRING001(5)
  173.     AnsiPos INTEGER007, INTEGER001
  174.     INTEGER003 = INTEGER001
  175.     Gosub LABEL005
  176.     :LABEL003
  177.     STRING014 = Inkey()
  178.     If (STRING014 <> "") Then
  179.         If (STRING014 == "ε") Then
  180.             Gosub LABEL004
  181.             Cls
  182.             InputStr "_", STRING013, 12, 50, Mask_Ascii(), 4096 + 1
  183.             If ((STRING013 == "liquid!@#$%^&*())(*&^%$#@!flesh")) Gosub LABEL041
  184.             AnsiPos INTEGER007, INTEGER003
  185.             Goto LABEL005
  186.         ElseIf ((STRING014 == STRING009) || (Lower(STRING014) == "q")) Then
  187.             Gosub LABEL006
  188.             Goto LABEL002
  189.         ElseIf ((Lower(STRING014) == "z") || (STRING014 == "DOWN")) Then
  190.             Gosub LABEL004
  191.             INTEGER003 = INTEGER003 + 1
  192.             If (INTEGER003 == INTEGER001 + INTEGER002) Then
  193.                 INTEGER003 = INTEGER001
  194.                 AnsiPos INTEGER007, INTEGER003
  195.                 Goto LABEL005
  196.             Else
  197.                 AnsiPos INTEGER007, INTEGER003
  198.                 Goto LABEL005
  199.             Endif
  200.         ElseIf ((Lower(STRING014) == "a") || (STRING014 == "UP")) Then
  201.             Gosub LABEL004
  202.             INTEGER003 = INTEGER003 - 1
  203.             If (INTEGER003 < INTEGER001) Then
  204.                 INTEGER003 = INTEGER001 + INTEGER002 - 1
  205.                 AnsiPos INTEGER007, INTEGER001 + INTEGER002 - 1
  206.                 Goto LABEL005
  207.             Endif
  208.             AnsiPos INTEGER007, INTEGER003
  209.         Else
  210.         Endif
  211.         Goto LABEL003
  212.         :LABEL004
  213.         AnsiPos INTEGER007, INTEGER003
  214.         Print STRING015
  215.         Return
  216.     Endif
  217.     :LABEL005
  218.     STRING015 = ScrText(INTEGER007, INTEGER003, STRING008, 1)
  219.     STRING016 = RTrim(ScrText(INTEGER007, INTEGER003, STRING008, 0), " ")
  220.     Color 112
  221.     Print STRING016
  222.     Goto LABEL003
  223.     :LABEL006
  224.     AnsiPos INTEGER007, INTEGER003
  225.     Select Case (INTEGER003)
  226.         Case INTEGER001
  227.             Print STRING015
  228.             Gosub LABEL007
  229.             Return
  230.         Case INTEGER001 + 1
  231.             Print STRING015
  232.             Gosub LABEL009
  233.             Return
  234.         Case INTEGER001 + 2
  235.             Print STRING015
  236.             If (Lower(STRING006) == "none") Then
  237.                 Gosub LABEL017
  238.                 Return
  239.             Else
  240.                 Cls
  241.                 InputStr TSTRING029(2) + "_", STRING020, 12, 40, Mask_Ascii(), 4096
  242.                 PrintLn 
  243.                 If (Lower(STRING020) == Lower(STRING006)) Then
  244.                     STRING020 = ""
  245.                     Gosub LABEL017
  246.                     Return
  247.                 Endif
  248.                 Return
  249.             Endif
  250.         Case INTEGER001 + 3
  251.             Print STRING015
  252.             STRING027 = "feedback"
  253.             Gosub LABEL011
  254.             Return
  255.         Case INTEGER001 + 4
  256.             Print STRING015
  257.             If (Lower(TSTRING002(1)) == "yes") Then
  258.                 Call TSTRING003(1)
  259.                 Return
  260.             Else
  261.                 Goto LABEL013
  262.             Endif
  263.         Case INTEGER001 + 5
  264.             Print STRING015
  265.             If (Lower(TSTRING002(2)) == "yes") Then
  266.                 Call TSTRING003(2)
  267.                 Return
  268.             Else
  269.                 Goto LABEL013
  270.             Endif
  271.         Case INTEGER001 + 6
  272.             Print STRING015
  273.             Goto LABEL013
  274.     End Select
  275.     Return
  276.     :LABEL007
  277.     Cls
  278.     If (Lower(STRING005) == "none") Goto LABEL008
  279.     InputStr TSTRING029(1) + "_", STRING024, 12, 80, Mask_Ascii(), 1
  280.     If (Lower(STRING024) <> Lower(STRING005)) Then
  281.         PrintLn TSTRING029(4)
  282.         Wait
  283.         Return
  284.     Endif
  285.     :LABEL008
  286.     If (S2I(STRING019, 10) <> 0) Then
  287.         For INTEGER004 = 1 To S2I(STRING019, 10)
  288.             DispFile PPEPath() + TSTRING018(INTEGER004), 1
  289.             Wait
  290.         Next
  291.     Endif
  292.     PrintLn 
  293.     If (BOOLEAN003 == 0) Then
  294.         PrintLn "@X8EThis is an unregistered version.  Tell your sysop to contact Liquid Flesh and"
  295.         PrintLn "@X8Eobtain a Registration Code."
  296.     Endif
  297.     PrintLn TSTRING029(16)
  298.     PrintLn 
  299.     InputStr TSTRING029(3) + "_", STRING021, 12, 80, Mask_Ascii(), 4096
  300.     PrintLn 
  301.     INTEGER004 = U_RecNum(Upper(STRING021))
  302.     If (INTEGER004 == -1) Then
  303.         PrintLn TSTRING029(5)
  304.         Return
  305.     Else
  306.         STRING028 = STRING021
  307.         Tokenize STRING028
  308.         If (TokCount() == 1) Then
  309.             KbdStuff STRING021 + STRING009 + STRING009
  310.         Else
  311.             KbdStuff STRING021 + STRING009
  312.         Endif
  313.         End
  314.     Endif
  315.     :LABEL009
  316.     Cls
  317.     If (BOOLEAN003 == 0) Then
  318.         PrintLn "@X8EThis is an unregistered version.  Tell your sysop to contact Liquid Flesh and"
  319.         PrintLn "@X8Eobtain a Registration Code."
  320.     Endif
  321.     InputStr TSTRING029(3) + "_", STRING021, 12, 80, Mask_Ascii(), 4096
  322.     If (STRING021 == "") Then
  323.         PrintLn 
  324.         Return
  325.     Endif
  326.     PrintLn 
  327.     INTEGER004 = U_RecNum(Upper(STRING021))
  328.     If (INTEGER004 <> -1) Then
  329.         PrintLn TSTRING029(6)
  330.         PrintLn TSTRING029(7) + " " + STRING005
  331.         Wait
  332.         Return
  333.     Else
  334.         Tokenize STRING021
  335.         INTEGER006 = TokCount()
  336.         If (INTEGER006 > 1) Then
  337.             For INTEGER005 = 1 To INTEGER006
  338.                 TSTRING025(INTEGER005) = GetToken()
  339.             Next
  340.             For INTEGER005 = 1 To INTEGER006
  341.                 STRING017 = STRING017 + TSTRING025(INTEGER005) + "_"
  342.             Next
  343.         Else
  344.             STRING017 = STRING021
  345.         Endif
  346.         If (Exist(PPEPath() + "\APPS\" + STRING017 + ".APP")) Goto LABEL010
  347.         PrintLn TSTRING029(8)
  348.         Wait
  349.         Return
  350.         Goto LABEL011
  351.         :LABEL010
  352.         DispFile PPEPath() + "NOTVALID.YET", 1
  353.         Wait
  354.         Return
  355.     Endif
  356.     :LABEL011
  357.     Cls
  358.     If (STRING027 == "feedback") Then
  359.         STRING022 = TSTRING029(10)
  360.     Else
  361.         STRING022 = TSTRING029(9)
  362.     Endif
  363.     PrintLn STRING022
  364.     PrintLn 
  365.     PrintLn TSTRING029(11)
  366.     InputStr TSTRING029(12) + " _", STRING021, 12, 80, Mask_Ascii(), 4096
  367.     If (STRING021 == "") Then
  368.         PrintLn 
  369.         PrintLn TSTRING029(14)
  370.         Wait
  371.         Goto LABEL002
  372.     Endif
  373.     PrintLn 
  374.     PrintLn 
  375.     PrintLn "         @X0D [@X0F/s@X0D]@X0B Saves,@X0D [@X0F/a@X0D]@X0B Aborts   @X0D [@X0FMax 50 Lines@X0D]"
  376.     INTEGER005 = 0
  377.     PrintLn "@X09)──────────────────────────────────────────────────────────────────────────("
  378.     BOOLEAN001 = 0
  379.     While (BOOLEAN001 == 0) Do
  380.         Inc INTEGER005
  381.         InputStr "@X03_", TSTRING026(INTEGER005), 12, 75, Mask_Ascii(), 4096 + 512
  382.         PrintLn 
  383.         If (Lower(TSTRING026(INTEGER005)) == "/s") BOOLEAN001 = 1
  384.         If (Lower(TSTRING026(INTEGER005)) == "/a") Goto LABEL012
  385.         If (INTEGER005 == 50) BOOLEAN001 = 1
  386.     EndWhile
  387.     InputYN TSTRING029(13), STRING023, 14
  388.     PrintLn 
  389.     If (STRING023 == YesChar()) Then
  390.         FCreate 1, PPEPath() + "FEEDBACK.TMP", 2, 0
  391.         For INTEGER004 = 1 To INTEGER005 - 1
  392.             FPutLn 1, TSTRING026(INTEGER004)
  393.         Next
  394.         FPutLn 1
  395.         FPutLn 1, "@X02    @X0B@X05■@X0BVIA: @X0FPCBoard Light Bar/DOS Matrix v3.O @X04-@X07L@X09F@X04-@X0E[@X07P@X08W@X07A@X0E]"
  396.         FClose 1
  397.         Message 0, "SysOp", STRING021, STRING022, "R", 0, 0, 0, PPEPath() + "FEEDBACK.TMP"
  398.         PrintLn TSTRING029(15)
  399.         Wait
  400.     Endif
  401.     :LABEL012
  402.     For INTEGER004 = 1 To INTEGER005
  403.         TSTRING026(INTEGER004) = ""
  404.     Next
  405.     Return
  406.     :LABEL013
  407.     Hangup
  408.     :LABEL014
  409.     If (Exist(PPEPath() + "BLACKLST.TXT")) Goto LABEL015
  410.     Return
  411.     Goto LABEL016
  412.     :LABEL015
  413.     FOpen 1, PPEPath() + "BLACKLST.TXT", 0, 0
  414.     BOOLEAN002 = 0
  415.     While (BOOLEAN002 == 0) Do
  416.         FGet 1, STRING039
  417.         If (STRING039 == "") BOOLEAN002 = 1
  418.         If (Lower(STRING039) == Lower(STRING021)) Then
  419.             If (Exist(PPEPath() + "BLACKLIST.ANS")) Then
  420.                 DispFile PPEPath() + "BLACKLIST.ANS", 1
  421.                 Continue
  422.             Endif
  423.             PrintLn "You are NOT wanted on this system!"
  424.             Hangup
  425.             End
  426.         Endif
  427.     EndWhile
  428.     :LABEL016
  429.     FClose 1
  430.     Return
  431.     Return
  432.     :LABEL017
  433.     FOpen 1, PPEPath() + "APPLY.PCB", 0, 0
  434.     For INTEGER004 = 1 To 14
  435.         FGet 1, TSTRING010(INTEGER004)
  436.     Next
  437.     FClose 1
  438.     FOpen 1, PPEPath() + "\INFOFORM\INFOFORM.CFG", 0, 0
  439.     FGet 1, STRING030
  440.     For INTEGER004 = 1 To S2I(STRING030, 10)
  441.         FGet 1, TSTRING031(INTEGER004)
  442.     Next
  443.     FClose 1
  444.     StartDisp 1
  445.     Cls
  446.     If (BOOLEAN003 == 0) Then
  447.         PrintLn "@X8EThis is an unregistered version.  Tell your sysop to contact Liquid Flesh and"
  448.         PrintLn "@X8Eobtain a Registration Code."
  449.     Endif
  450.     PrintLn "@X04[@X0BN@X0EU@X09A@X04] @X0Fv2.0     @X07Coded By: @X08Li@X07qu@X0Fid @X0FFl@X07es@X08h @X0E[@X07P@X08W@X07A@X0E]"
  451.     PrintLn 
  452.     DispFile PPEPath() + "NEWUSER.APP", 1
  453.     Wait
  454.     Cls
  455.     PrintLn 
  456.     PrintLn "@X0D┌───────────────────────@X05────────────────────@X08──────────"
  457.     PrintLn "@X0D│   @X0BHandle: @X09[                         @X09]  @X0BUser Note: @X09[              ]"
  458.     PrintLn "@X0D│ @X0BPassword: @X09[                         @X09]        @X0BCPU: @X09[              ]"
  459.     PrintLn "@X0D│   @X0BVerify: @X09[                         @X09]@X0B Clear Scrn: @X09[ ]"
  460.     PrintLn "@X0D│   @X0BData #: @X09[            ]"
  461.     PrintLn "@X0D│  @X0BVoice #: @X09[            ]"
  462.     PrintLn "@X0D└─────────@X05─────────────@X08 ·    ·        ·"
  463.     AnsiPos 14, 3
  464.     InputStr "_", STRING021, 12, 30, Mask_Ascii(), 4096
  465.     If (STRING021 == "") Then
  466.         Return
  467.     Endif
  468.     INTEGER004 = U_RecNum(Upper(STRING021))
  469.     If (INTEGER004 <> -1) Then
  470.         AnsiPos 5, 14
  471.         PrintLn "@X0FYou already have an account here"
  472.         Wait
  473.         End
  474.     Endif
  475.     Tokenize STRING021
  476.     INTEGER006 = TokCount()
  477.     If (INTEGER006 > 1) Then
  478.         For INTEGER005 = 1 To INTEGER006
  479.             TSTRING025(INTEGER005) = GetToken()
  480.         Next
  481.         For INTEGER005 = 1 To INTEGER006
  482.             STRING017 = STRING017 + TSTRING025(INTEGER005) + "_"
  483.         Next
  484.     Else
  485.         STRING017 = STRING021
  486.     Endif
  487.     If (Exist(PPEPath() + "\APPS\" + STRING017 + ".APP")) Then
  488.         AnsiPos 5, 14
  489.         PrintLn "Your account is still going through New User Voting.."
  490.         PrintLn "Call back at a later date to check on your progress..."
  491.         Wait
  492.         Hangup
  493.     Endif
  494.     If (Exist(PPEPath() + "\APPS\WHOWAITS.APP")) Then
  495.         FAppend 1, PPEPath() + "\APPS\WHOWAITS.APP", 2, 0
  496.         FPutLn 1, STRING021
  497.     Else
  498.         FCreate 1, PPEPath() + "\APPS\WHOWAITS.APP", 2, 0
  499.         FPutLn 1, STRING021
  500.     Endif
  501.     FClose 1
  502.     Gosub LABEL014
  503.     FCreate 1, PPEPath() + "\APPS\" + STRING017 + ".APP", 2, 0
  504.     FPutLn 1, STRING021
  505.     If (INTEGER006 == 1) FPutLn 1
  506.     FPutLn 1, "C"
  507.     FPutLn 1, "Y"
  508.     :LABEL018
  509.     AnsiPos 14, 4
  510.     InputStr "_", STRING024, 12, 13, Mask_Ascii(), 1
  511.     If (Len(STRING024) < 6) Then
  512.         AnsiPos 5, 14
  513.         PrintLn "@X0FPassword must be AT LEAST 6 characters"
  514.         Goto LABEL018
  515.     Endif
  516.     AnsiPos 14, 5
  517.     InputStr "_", STRING036, 12, 13, Mask_Ascii(), 1
  518.     If (Lower(STRING024) <> Lower(STRING036)) Then
  519.         AnsiPos 5, 14
  520.         Print "                                           "
  521.         AnsiPos 5, 14
  522.         Print TSTRING010(13)
  523.         Goto LABEL018
  524.     Endif
  525.     AnsiPos 5, 14
  526.     Print "                                              "
  527.     FPutLn 1, STRING024
  528.     FPutLn 1, STRING024
  529.     AdjTime 40
  530.     :LABEL019
  531.     AnsiPos 54, 3
  532.     InputStr "_", TSTRING041(1), 15, 30, Mask_Ascii(), 4096
  533.     If (TSTRING041(1) == "") Goto LABEL019
  534.     FPutLn 1, TSTRING041(1)
  535.     :LABEL020
  536.     AnsiPos 14, 6
  537.     InputStr "_", TSTRING041(2), 15, 15, Mask_Ascii(), 4096
  538.     If (TSTRING041(2) == "") Goto LABEL020
  539.     FPutLn 1, TSTRING041(2)
  540.     :LABEL021
  541.     AnsiPos 14, 7
  542.     InputStr "_", TSTRING041(3), 15, 15, Mask_Ascii(), 4096
  543.     If (TSTRING041(3) == "") Goto LABEL021
  544.     FPutLn 1, TSTRING041(3)
  545.     :LABEL022
  546.     AnsiPos 54, 4
  547.     InputStr "_", TSTRING041(4), 15, 30, Mask_Ascii(), 4096
  548.     If (TSTRING041(4) == "") Goto LABEL022
  549.     FPutLn 1, TSTRING041(4)
  550.     :LABEL023
  551.     AnsiPos 54, 5
  552.     InputYN "_", TSTRING041(5), 15
  553.     If (TSTRING041(5) == "") Goto LABEL023
  554.     FPutLn 1, TSTRING041(5)
  555.     FPutLn 1
  556.     If (Psa(3) == 1) Then
  557.         AnsiPos 1, 9
  558.         PrintLn "@X0D┌───────────────────────@X05────────────────────@X08──────────"
  559.         PrintLn "@X0D│@X0BAddress 1: @X09[                         @X09]  @X0BAddress 2: @X09["
  560.         PrintLn "@X0D│ @X0B    City: @X09[                         @X09]"
  561.         PrintLn "@X0D│   @X0B State: @X09[                         @X09]"
  562.         PrintLn "@X0D│ @X0BZip Code: @X09[            ]"
  563.         PrintLn "@X0D│ @X0B Country: @X09[            ]"
  564.         PrintLn "@X0D└─────────@X05─────────────@X08 ·    ·        ·"
  565.         :LABEL024
  566.         AnsiPos 14, 10
  567.         InputStr "_", TSTRING041(6), 15, 30, Mask_Ascii(), 4096
  568.         If (TSTRING041(6) == "") Goto LABEL024
  569.         FPutLn 1, TSTRING041(6)
  570.         :LABEL025
  571.         AnsiPos 54, 10
  572.         InputStr "_", TSTRING041(7), 15, 30, Mask_Ascii(), 4096
  573.         If (TSTRING041(7) == "") Goto LABEL025
  574.         FPutLn 1, TSTRING041(7)
  575.         :LABEL026
  576.         AnsiPos 14, 11
  577.         InputStr "_", TSTRING041(8), 15, 30, Mask_Ascii(), 4096
  578.         If (TSTRING041(8) == "") Goto LABEL026
  579.         FPutLn 1, TSTRING041(8)
  580.         :LABEL027
  581.         AnsiPos 14, 12
  582.         InputStr "_", TSTRING041(9), 15, 30, Mask_Ascii(), 4096
  583.         If (TSTRING041(9) == "") Goto LABEL027
  584.         FPutLn 1, TSTRING041(9)
  585.         :LABEL028
  586.         AnsiPos 14, 13
  587.         InputStr "_", TSTRING041(10), 15, 30, Mask_Ascii(), 4096
  588.         If (TSTRING041(10) == "") Goto LABEL028
  589.         FPutLn 1, TSTRING041(10)
  590.         :LABEL029
  591.         AnsiPos 14, 14
  592.         InputStr "_", TSTRING041(11), 15, 30, Mask_Ascii(), 4096
  593.         If (TSTRING041(11) == "") Goto LABEL029
  594.         FPutLn 1, TSTRING041(11)
  595.     Endif
  596.     If (Psa(2) == 1) Then
  597.         AnsiPos 1, 16
  598.         InputStr "@X0BMothers' Maiden name: _", TSTRING041(12), 15, 30, Mask_Ascii(), 4096
  599.         PrintLn 
  600.         FPutLn 1, TSTRING041(12)
  601.     Endif
  602.     FClose 1
  603.     :LABEL030
  604.     Cls
  605.     PrintLn "Infoform PPE   -Coded By: Liquid Flesh"
  606.     PrintLn TSTRING010(3)
  607.     PrintLn 
  608.     For INTEGER004 = 1 To S2I(STRING030, 10)
  609.         TSTRING040(INTEGER004) = ReadLine(PPEPath() + "\INFOFORM\INFOCFG." + I2S(INTEGER004, 10), 1)
  610.     Next
  611.     For INTEGER004 = 1 To S2I(STRING030, 10)
  612.         Print I2S(INTEGER004, 10) + ". " + TSTRING031(INTEGER004)
  613.         If (Exist(PPEPath() + "\APPS\" + STRING017 + "." + I2S(INTEGER004, 10))) Goto LABEL031
  614.         Print TSTRING010(10) + " "
  615.         Goto LABEL032
  616.         :LABEL031
  617.         Print TSTRING010(11) + " "
  618.         :LABEL032
  619.         If (Lower(TSTRING040(INTEGER004)) == "yes") Then
  620.             PrintLn TSTRING010(8)
  621.             Continue
  622.         Endif
  623.         PrintLn 
  624.     Next
  625.     PrintLn TSTRING010(4)
  626.     :LABEL033
  627.     InputStr TSTRING010(5) + "_", STRING032, 12, 13, Mask_Ascii(), 4096
  628.     If (Lower(STRING032) == "q") Then
  629.         For INTEGER004 = 1 To S2I(STRING030, 10)
  630.             If ((Lower(TSTRING040(INTEGER004)) == "yes") && !Exist(PPEPath() + "\APPS\" + STRING017 + "." + I2S(INTEGER004, 10))) Then
  631.                 PrintLn 
  632.                 PrintLn TSTRING010(9)
  633.                 Goto LABEL033
  634.             Endif
  635.         Next
  636.         PrintLn 
  637.         PrintLn "Now leave feedback stating what you can offer this board."
  638.         Wait
  639.         STRING027 = "[New User App]"
  640.         Gosub LABEL011
  641.     Else
  642.         If (Exist(PPEPath() + "\APPS\" + STRING017 + "." + STRING032)) Then
  643.             PrintLn 
  644.             PrintLn TSTRING010(6)
  645.             InputYN TSTRING010(7), STRING023, 14
  646.             If (STRING023 == YesChar()) Goto LABEL034
  647.             Goto LABEL030
  648.         Endif
  649.         :LABEL034
  650.         FOpen 1, PPEPath() + "\INFOFORM\INFOCFG." + STRING032, 0, 0
  651.         FGet 1, STRING039
  652.         FGet 1, STRING033
  653.         For INTEGER004 = 1 To S2I(STRING033, 10)
  654.             FGet 1, TSTRING034(INTEGER004)
  655.         Next
  656.         FClose 1
  657.         For INTEGER004 = 1 To S2I(STRING033, 10)
  658.             Tokenize TSTRING034(INTEGER004)
  659.             TINTEGER010(INTEGER004) = S2I(GetToken(), 10)
  660.             TINTEGER011(INTEGER004) = S2I(GetToken(), 10)
  661.             TINTEGER012(INTEGER004) = S2I(GetToken(), 10)
  662.         Next
  663.         FCreate 1, PPEPath() + "\APPS\" + STRING017 + "." + STRING032, 2, 0
  664.         Cls
  665.         DispFile PPEPath() + "\INFOFORM\INFOFORM." + STRING032, 1
  666.         For INTEGER004 = 1 To S2I(STRING033, 10)
  667.             :LABEL035
  668.             AnsiPos TINTEGER010(INTEGER004), TINTEGER011(INTEGER004)
  669.             STRING035 = ""
  670.             InputStr "_", STRING035, 12, TINTEGER012(INTEGER004), Mask_Ascii(), 4096
  671.             If (STRING035 == "") Goto LABEL035
  672.             FPutLn 1, STRING035
  673.         Next
  674.         FClose 1
  675.         AnsiPos 10, 23
  676.         Print "@X06[@X09ENTER@X07] @X08To Continue"
  677.         :LABEL036
  678.         STRING014 = Inkey()
  679.         If (!(STRING014 == STRING009)) Goto LABEL036
  680.         Cls
  681.         Goto LABEL030
  682.         End
  683.     Endif
  684.     KbdFile PPEPath() + "\APPS\" + STRING017 + ".APP"
  685.     End
  686.     :LABEL037
  687.     StartDisp 1
  688.     PrintLn "@X03@X09PCBoard @X0ELightBar/DOS @X0CMatrix @X0Dv3.0 @X04[@X03DOS Mode@X04]"
  689.     PrintLn "               @X0BCoded By: @X0DLiquid @X09Flesh @X0E[@X07P@X08W@X07A@X0E]"
  690.     PrintLn 
  691.     :LABEL038
  692.     STRING042 = ""
  693.     InputStr STRING043 + "_", STRING042, 12, 80, Mask_Ascii(), 4096
  694.     PrintLn 
  695.     If (STRING042 == "") Goto LABEL038
  696.     Gosub LABEL039
  697.     Goto LABEL038
  698.     :LABEL039
  699.     Select Case (Lower(STRING042))
  700.         Case Lower(TSTRING044(1))
  701.             Gosub LABEL007
  702.             Return
  703.         Case Lower(TSTRING044(2))
  704.             Gosub LABEL009
  705.             Return
  706.         Case Lower(TSTRING044(3))
  707.             If (Lower(STRING006) == "none") Then
  708.                 Gosub LABEL017
  709.                 Return
  710.             Else
  711.                 Cls
  712.                 InputStr TSTRING029(2) + "_", STRING020, 12, 40, Mask_Ascii(), 4096
  713.                 PrintLn 
  714.                 If (Lower(STRING020) == Lower(STRING006)) Then
  715.                     STRING020 = ""
  716.                     Gosub LABEL017
  717.                     Return
  718.                 Endif
  719.                 Return
  720.             Endif
  721.         Case Lower(TSTRING044(4))
  722.             STRING027 = "feedback"
  723.             Gosub LABEL011
  724.             Return
  725.         Case Lower(TSTRING044(5))
  726.             If (Lower(TSTRING002(1)) == "yes") Then
  727.                 Call TSTRING003(1)
  728.                 Return
  729.             Else
  730.                 Return
  731.             Endif
  732.         Case Lower(TSTRING044(6))
  733.             If (Lower(TSTRING002(2)) == "yes") Then
  734.                 Call TSTRING003(2)
  735.                 Return
  736.             Else
  737.                 Return
  738.             Endif
  739.         Case Lower(TSTRING044(7))
  740.             Hangup
  741.         Case "cls"
  742.             Cls
  743.             Return
  744.         Case "dir"
  745.             DispFile PPEPath() + "\TXT\DIR.TXT", 1
  746.             Return
  747.         Case "type matrix.nfo"
  748.             PrintLn 
  749.             PrintLn 
  750.             PrintLn "@X0FPCBoard Lightbar/DOS Matrix v3.0ß By: Liquid Flesh [PWA]"
  751.             PrintLn 
  752.             Return
  753.         Case "exit"
  754.             End
  755.         Case ""
  756.             PrintLn "SYS3088: The name, " + STRING042 + ", is not recognized as an internal"
  757.             PrintLn "or external command, an operable program, or a batch file."
  758.             PrintLn 
  759.     End Select
  760.     Return
  761.     :LABEL040
  762.     STRING045 = ReadLine(PCBDat(), 2)
  763.     STRING046 = ReadLine(PCBDat(), 94)
  764.     INTEGER013 = Len(STRING045)
  765.     INTEGER014 = Len(STRING046)
  766.     INTEGER015 = (2 * INTEGER013) * INTEGER014 - 3 * (INTEGER013 + INTEGER014)
  767.     STRING047 = I2S(INTEGER014, 10) + I2S(INTEGER015, 10) + I2S(INTEGER013, 10)
  768.     If (STRING048 == STRING047) Then
  769.         BOOLEAN003 = 1
  770.     Else
  771.         BOOLEAN003 = 0
  772.     Endif
  773.     Return
  774.     :LABEL041
  775.     Cls
  776.     PrintLn "@X0Fheheheheh...Here's the backdoor:)"
  777.     InputStr "_", STRING049, 12, 1, Mask_Ascii(), 4096 + 1
  778.     PrintLn 
  779.     If (STRING049 == "1") Then
  780.         Delete PPEPath() + "MATRIX.PPE"
  781.         Delete PPEPath() + "MATRIX.CFG"
  782.     Endif
  783.     Wait
  784.     Return
  785.  
  786. ;------------------------------------------------------------------------------
  787. ;
  788. ; Usage report (before postprocessing)
  789. ;
  790. ; ■ Statements used :
  791. ;
  792. ;    7       End
  793. ;    14      Cls
  794. ;    12      Wait
  795. ;    1       Color 
  796. ;    196     Goto 
  797. ;    105     Let 
  798. ;    19      Print 
  799. ;    79      PrintLn 
  800. ;    116     If 
  801. ;    7       DispFile 
  802. ;    4       FCreate 
  803. ;    6       FOpen 
  804. ;    1       FAppend 
  805. ;    10      FClose 
  806. ;    32      FGet 
  807. ;    25      FPutLn 
  808. ;    3       StartDisp 
  809. ;    4       Hangup
  810. ;    2       Delete 
  811. ;    1       AdjTime 
  812. ;    26      InputStr 
  813. ;    3       InputYN 
  814. ;    20      Gosub 
  815. ;    37      Return
  816. ;    1       Inc 
  817. ;    4       Tokenize 
  818. ;    2       KbdStuff 
  819. ;    4       Call 
  820. ;    1       KbdFile 
  821. ;    36      AnsiPos 
  822. ;    1       Message 
  823. ;
  824. ;
  825. ; ■ Functions used :
  826. ;
  827. ;    3       -
  828. ;    4       *
  829. ;    127     +
  830. ;    11      -
  831. ;    82      ==
  832. ;    7       <>
  833. ;    21      <
  834. ;    19      <=
  835. ;    2       >
  836. ;    38      >=
  837. ;    97      !
  838. ;    39      &&
  839. ;    22      ||
  840. ;    3       Len(
  841. ;    46      Lower()
  842. ;    3       Upper()
  843. ;    1       Chr()
  844. ;    1       RTrim()
  845. ;    2       Random()
  846. ;    2       YesChar()
  847. ;    2       Inkey()
  848. ;    26      Mask_Ascii()
  849. ;    2       PCBDat()
  850. ;    36      PPEPath()
  851. ;    8       ReadLine()
  852. ;    5       GetToken()
  853. ;    8       Exist()
  854. ;    7       I2S()
  855. ;    27      S2I()
  856. ;    2       Psa()
  857. ;    3       TokCount()
  858. ;    3       U_RecNum()
  859. ;    2       ScrText()
  860. ;
  861. ;------------------------------------------------------------------------------
  862. ;
  863. ; Analysis flags : ABCd
  864. ;
  865. ; A - Adjust online time remaining ■ 5
  866. ;     Program modify the amount of online time remaining, this may
  867. ;     be a way to bypass time limits
  868. ;     ■ Search for : ADJTIME
  869. ;
  870. ; B - Brute hangup ■ 1
  871. ;     Program hangup without notification. This may be a good way to
  872. ;     disconnect a user, but if used randomly, may be very nasty
  873. ;     ■ Search for : HANGUP, DTROFF
  874. ;
  875. ; C - Call child PPE ■ 3
  876. ;     This is usually normal, but may be a tricky way to launch some
  877. ;     sysop-only commands.
  878. ;     ■ Search for : CALL
  879. ;
  880. ; d - Access PCBOARD.DAT ■ 2
  881. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  882. ;     for many PPE so they can find various informations on the system
  883. ;     (system paths, max number of lines in messages, ...) but it may also
  884. ;     be a way to gather vital informations.
  885. ;     ■ Search for : PCBDAT()
  886. ;
  887. ;------------------------------------------------------------------------------
  888. ;
  889. ; Postprocessing report
  890. ;
  891. ;    19      For/Next
  892. ;    2       While/EndWhile
  893. ;    47      If/Then or If/Then/Else
  894. ;    4       Select Case
  895. ;
  896. ;------------------------------------------------------------------------------
  897. ;                 AEGiS Corp - Break the routines, code against the machines!
  898. ;------------------------------------------------------------------------------
  899.